FROM golang:alpine as builder
RUN go version
RUN sed -i 's@dl-cdn.alpinelinux.org@mirrors.aliyun.com@g' /etc/apk/repositories && apk update && apk --no-cache add tzdata
ARG GOPROXY=https://goproxy.cn,direct
# 指定构建过程中的工作目录
WORKDIR /app
# 将当前目录（dockerfile所在目录）下所有文件都拷贝到工作目录下（.dockerignore中文件除外）
COPY . /app/
# 执行代码编译命令。操作系统参数为linux，编译后的二进制产物命名为main，并存放在当前目录下。
RUN CGO_ENABLED=0 GOEXPERIMENT=greenteagc go build -ldflags="-w -s -extldflags -static" -o main .

# 选用运行时所用基础镜像（GO语言选择原则：尽量体积小、包含基础linux内容的基础镜像）

#FROM alpine
FROM scratch
COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
# 设置时区为上海时间
COPY --from=builder /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
COPY --from=builder /usr/share/zoneinfo/Asia/Shanghai /etc/timezone
ENV TZ=Asia/Shanghai
###############################################################################
#                                INSTALLATION
###############################################################################
# 将编译好的二进制文件复制到容器中
COPY --from=builder /app/main /registry-proxy

###############################################################################
#                                   START
###############################################################################
ENV PROXY_UPSTREAM="https://registry-1.docker.io"
ENV PROXY_HTTPS_ENABLE="false"
ENV PROXY_LOG_LEVEL="info"
ENV ENABLE_AUTO_CERT=0
ENV CERT_DOMAIN=""
ENV CERT_EMAIL=""

WORKDIR /
EXPOSE 80/tcp
EXPOSE 443/tcp

ENTRYPOINT ["./registry-proxy"]
